package cn.b.sky.form.service;

import cn.b.sky.common.model.BatchJobReport;
import cn.b.sky.common.model.Page;
import cn.b.sky.form.model.Sequence;
import cn.b.sky.form.model.condition.SequenceCondition;

/**
 * 
 * <strong>Title : SequenceService<br></strong>
 * <strong>Package : cn.b.sky.flowable.service<br></strong>
 * <strong>Description : </strong>序列操作业务类接口<br> 
 * <strong>Create on : 2016-09-28 上午09:36:14<br></strong>
 * <p>
 * @author JunLin.Yang<br>
 * @version <strong>v1.0.0</strong>
 */
public interface SequenceService {

  /**
   * 
   * <strong>Title : insertSequence<br></strong>
   * <strong>Description : </strong>新增序列数据<br> 
   * <strong>Create on : 2016-09-28 上午09:36:14<br></strong>
   * <p>
   * @param data 序列
   * @return
   * int 新增记录数
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public int insertSequence(Sequence data);

  /**
   * 
   * <strong>Title : updateSequence<br></strong>
   * <strong>Description : </strong>更新序列数据<br> 
   * <strong>Create on : 2016-09-28 上午09:36:14<br></strong>
   * <p>
   * @param data 序列
   * @return
   * int 更新的记录数
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public int updateSequence(Sequence data);

  /**
   * 
   * <strong>Title : deleteSequence<br></strong>
   * <strong>Description : </strong>删除序列数据<br> 
   * <strong>Create on : 2016-09-28 上午09:36:14<br></strong>
   * <p>
   * @param data 序列
   * @return
   * BatchJobReport 执行结果信息对象
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public BatchJobReport deleteSequence(Sequence data);

  /**
   * 
   * <strong>Title : deleteSequenceByPrimaryKey<br></strong>
   * <strong>Description : </strong>根据主键信息删除序列数据<br> 
   * <strong>Create on : 2016-09-28 上午09:36:14<br></strong>
   * <p>
  * @param siteCode 工厂编号
  * @param sequenceCode 序列编号
  * @return
   * BatchJobReport 执行结果信息对象
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public BatchJobReport deleteSequenceByPrimaryKey(String siteCode, String sequenceCode);

  /**
   * 
   * <strong>Title : getSequenceByPrimaryKey<br></strong>
   * <strong>Description : </strong>根据主键查询序列对象<br> 
   * <strong>Create on : 2016-09-28 上午09:36:14<br></strong>
   * <p>
   * @param siteCode 工厂编号
   * @param sequenceCode 序列编号
   * @return
   * Sequence 序列对象
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public Sequence getSequenceByPrimaryKey(String siteCode, String sequenceCode);

  /**
   * 
   * <strong>Title : existSequenceByPrimaryKey<br></strong>
   * <strong>Description : </strong>根据主键查询序列对象是否存在<br> 
   * <strong>Create on : 2016-09-28 上午09:36:14<br></strong>
   * <p>
   * @param siteCode 工厂编号
   * @param sequenceCode 序列编号
   * @return
   * boolean 数据是否存在
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public boolean existSequenceByPrimaryKey(String siteCode, String sequenceCode);

  /**
   * 
   * <strong>Title : selectSequencePageByCondition<br></strong>
   * <strong>Description : </strong>根据查询条件查询相应序列分页信息<br> 
   * <strong>Create on : 2016-09-28 上午09:36:14<br></strong>
   * <p>
   * @param condition 序列查询条件
   * @return 
   * List<Sequence> 序列分页信息
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public Page selectSequencePageByCondition(SequenceCondition condition);

  /**
   * 
   * <strong>Title : getSequencesCountByCondition<br></strong>
   * <strong>Description : </strong>根据查询条件查询相应的序列记录数<br> 
   * <strong>Create on : 2016-09-28 上午09:36:14<br></strong>
   * <p>
   * @param condition 序列查询条件
   * @return
   * long 数据记录数
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public long getSequencesCountByCondition(SequenceCondition condition);
  
  /**
   * 
   * <strong>Title : generateNextValue<br></strong>
   * <strong>Description : </strong>根据序列编码获取下一序列值<br> 
   * <strong>Create on : 2016-9-28 下午1:35:51<br></strong>
   * <p>
   * @param siteCode
   * @param sequenceCode
   * @return
   * Long
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Long generateNextValue(String siteCode, String sequenceCode);

}
